NavMesh & Agent
NavMesh bake
上メニュー > Window > AI > Navigationを開いて、
4つのタブのうちBakeを開いて
Bakeボタンを押せば、自動でTerrainのメッシュが検出されて、NavMeshがbakeされる
(自前のモデルなどにベイクする方法は不明)
NavMesh Agent
アタッチしたGameObjectの Transformを自動的に操作するComponent
agent.destinationプロパティにVector3をセットすることで自動で移動する。
code: .fs
namespace FSharp
open UnityEngine
type Mover() =
inherit MonoBehaviour()
member this.Start() =
this.agent <- this.GetComponent<AI.NavMeshAgent>()
member this.Update() =
this.agent.SetDestination this.target.position
UnityEngine.AIをopenしてもいいが、
依存がわかりやすいように今回はつけなかった
Obstacle
unity nav mesh obstacleで検索
まず、メッシュを障害物にするには、GameObjectをクリックして
Inspcetor > 上部 > Static > Everythingをチェックする
bake setting
Windows > AI > Navigation > bake
basic
Agent Radius
Agent height
Max Slope
Step Height
advanced
Max Voxel Size
Agent Radiusの丸角が角張った感じになる。
忠実度が下がるが、パフォーマンスは上がる
忠実度 : 低い 1 ~ 高い 0.00000..1
デフォルトでOK
Min Region Area
あまりに小さい面積は、NavMeshとして認識しないようにする
屋根の上、山の上
NavMeshObstacle
GameObjectとしてStaticではないが、障害物になるメッシュ。
例えば、
箱
閉まったドア
など、動かすことができるので Static ではないが、障害物にしたいものにつけるコンポーネント
つけるだけでOK